#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Core;
using Cephei.Core.Generic;
using Microsoft.FSharp.Core;
using Cephei.QL.Indexes;
using Cephei.QL.Times;
using Cephei.QL.Termstructures;
namespace Cephei.QL.Cashflows
{
    /// <summary> 
	/// ! %Coupon paying a BMA index, where the coupon rate is a weighted average of relevant fixings.  The weighted average is computed based on the actual calendar days for which a given fixing is valid and contributing to the given interest period.  Before weights are computed, the fixing schedule is adjusted for the index's fixing day gap. See rate() method for details.
	/// </summary>
    [Guid ("522D854C-C243-405f-9C8D-8914B0912B9F"),ComVisible(true)]
	public interface IAverageBMACoupon : Cephei.QL.Cashflows.IFloatingRateCoupon
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        /// <summary> 
		/// 
		/// </summary>
		 Double ConvexityAdjustment {get;}
        /// <summary> 
		/// 
		/// </summary>
		 DateTime FixingDate {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Cephei.Core.IVector<DateTime> FixingDates {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Double IndexFixing {get;}
        /// <summary> 
		/// 
		/// </summary>
		 Cephei.Core.IVector<Double> IndexFixings {get;}
    }   

    /// <summary> 
	/// ! %Coupon paying a BMA index, where the coupon rate is a weighted average of relevant fixings.  The weighted average is computed based on the actual calendar days for which a given fixing is valid and contributing to the given interest period.  Before weights are computed, the fixing schedule is adjusted for the index's fixing day gap. See rate() method for details. Factory
	/// </summary>
   	[ComVisible(true)]
    public interface IAverageBMACoupon_Factory 
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        /// <summary> 
		/// 
		/// </summary>
	    IAverageBMACoupon Create (DateTime paymentDate, Double nominal, DateTime startDate, DateTime endDate, Cephei.QL.Indexes.IBMAIndex index, Microsoft.FSharp.Core.FSharpOption<Double> gearing, Microsoft.FSharp.Core.FSharpOption<Double> spread, Microsoft.FSharp.Core.FSharpOption<DateTime> refPeriodStart, Microsoft.FSharp.Core.FSharpOption<DateTime> refPeriodEnd, Microsoft.FSharp.Core.FSharpOption<Cephei.QL.Times.IDayCounter> dayCounter, Cephei.QL.Cashflows.IFloatingRateCouponPricer QL_Pricer);
    }
}

